Technical Q&A QA1112
QTML, c2pstr and Pascal strings


QÅFdžÇÈ QuickTime ÇÃÉRÅ[ÉhÇ Macintosh Ç©ÇÁ Windows Ç…à⁄êAǵÇÊǧÇΔǵǃǢNjÇ∑ÅBWindows Ç≈ÇÕ Visual C++ ÇégǡǃǢNjÇ∑ÅBPascal ï∂éöóÒÇÃçÏê¨éûÇ…ÅAñÔâÓÇ»ñ‚ëËÇ…ëòãˆÇµÇƒÇ¢Ç‹Ç∑ÅBc2pstr ÇåƒÇ—èoÇ∑ÇΩÇ—Ç…ÉAÉNÉZÉXà·îΩÇ…Ç»ÇÈÇÃÇ≈Ç∑Ç™ÅAìØÇ∂ÉRÅ[ÉhÇ™ CodeWarrior Ç≈ÇÕñ‚ëËÇ»Ç≠ã@î\ǵǃǢNjÇ∑ÅBâΩÇ™ä‘à·Ç¡ÇƒÇ¢ÇÈÇÃÇ≈ǵÇÂǧÅB

AÅFÉAÉNÉZÉXà·îΩÇÃå¥àˆÇΔǵǃàÍî‘çlǶÇÁÇÍÇÈÇÃÇÕÅAï∂éöóÒÉfÅ[É^Ç™ì«Ç›éÊÇËêÍópÉÅÉÇÉäDždžÇÈDZÇΔÇ≈Ç∑ÅB

C åæåÍï∂éöóÒÇÕÅAï∂éöóÒÇÃç≈èâÇÃï∂éöÇ≈énÇ‹ÇËÅAÉkÉãÇÃílÅiASCII ÉRÅ[ÉhÇ≈ÇÃílÇÕÉ[ÉçÅjÇ≈èIÇÌÇËÇ‹Ç∑ÅB Pascal ï∂éöóÒÇÕÅAï∂éöóÒÇÃí∑Ç≥ÅiÉoÉCÉgêîÅjÇ≈énÇ‹ÇËÅAèIóπï∂éöÇÕdžÇËÇ‹ÇπÇÒÅB

Macintosh Ç≈ÇÕÅAå^Ç™àŸÇ»ÇËÇ‹Ç∑ÅB

C åæåÍï∂éöóÒÇÕ char *

Pascal ï∂éöóÒÇÕ ïÑçÜǻǵÇà char *

c2pstr ÇåƒÇ—èoÇ∑ÇΔÅAï∂éöóÒÇÕǪÇÃèÍÇ≈è„èëÇ´Ç≥ÇÍÅAC Ç©ÇÁ Pascal Ç…ïœä∑Ç≥ÇÍÇ‹Ç∑ÅBDZÇÍÇÕÅAÇ∑Ç◊ǃÇÃï∂éöÇÇ∏ÇÁǵǃÅAèIóπÇÃÉkÉãï∂éöÇçÌèúǵÅAêÊì™Ç…í∑Ç≥ÅiÉoÉCÉgêîÅjÇë}ì¸Ç∑ÇÈDZÇΔÇ…ÇÊǡǃçsÇÌÇÍÇ‹Ç∑ÅB

ÇΩÇΔǶnjÅA"hello\0x00" ÇÕÅA"\0x05hello" Ç…Ç»ÇËÇ‹Ç∑ÅB

Ç«ÇÃÉvÉâÉbÉgÉtÉHÅ[ÉÄDžǮǢǃLJÅAC åæåÍÇÃÉäÉeÉâÉãï∂éöóÒÇ c2pstr Ç…ìnÇ∑Ç◊Ç´Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅBDZÇÍÇ…ÇÕ 2 ǬÇÃóùóRǙdžÇËÇ‹Ç∑ÅBç≈èâÇÃóùóRÇÕÅAï∂éöóÒÉfÅ[É^Ç™ì«Ç›éÊÇËêÍópÉÅÉÇÉäDždžÇÈâ¬î\ê´Ç™Ç†ÇËÅAǪÇÃèÍçáÇ…ÇÕïœçXÇ∑ÇÈÇΔÉAÉNÉZÉXà·îΩÇ™ê∂Ç∂ÇÈÇ©ÇÁÇ≈Ç∑ÅB2 î‘ñ⁄ÇÃóùóRÇÕÅAç≈èâÇÃåƒÇ—èoǵǙê¨å˜ÇµÇΩÇΔǵǃLJÅAà»ç~ÇÃåƒÇ—èoǵDžÇÊǡǃï∂éöÇ™Ç≥ÇÁÇ…à⁄ìÆÇ≥ÇÍÇÈDZÇΔÇ≈ÅAñ≥à”ñ°Ç»ÉfÅ[É^Ç™ê∂Ç‹ÇÍÅAÉÅÉÇÉäì‡óeÇ™ïsê≥Ç…Ç»ÇÈÇ©ÇÁÇ≈Ç∑ÅB

"\0x05hello" ÇÕÅA"\0x06\0x05hello" Ç…Ç»ÇËÇ‹Ç∑Åiï∂éöóÒÉoÉbÉtÉ@ÇÃå„ÇÎÇÃÉoÉCÉgÇ™ÉkÉãï∂éöÇΔâºíËǵÇΩèÍçáÅjÅB

Macintosh Çà C ÉRÉìÉpÉCÉâÇÕÅA"\phello" ǻǫÇà Pascal ï∂éöóÒÇçÏê¨Ç≈Ç´ÇÈ "\p" ÇΔǢǧï\ãLÇÉTÉ|Å[ÉgǵǃǢNjÇ∑ÅB Win32 ÉRÉìÉpÉCÉâÇÕí èÌÅADZÇÃï\ãLÇÉTÉ|Å[ÉgǵǃǢǻǢÇÃÇ≈ "phello" ÇΔìØÇ∂ï∂éöóÒÇê∂ê¨ÇµÇ‹Ç∑ÅB

ÉRÅ[ÉhÇÃà⁄êAê´Çämï€Ç∑ÇÈÇΩÇflÇ…ÅAQuickTime Media LayerÅiQTMLÅjÇÕÅAí∑Ç≥ÉoÉCÉgÇ™ 112 (112 = 0x70 = 'p') Ç…ê›íËÇ≥ÇÍǃǢÇÈ Pascal ï∂éöóÒÇïpî…Ç…í≤Ç◊ǃÅADZÇÍÇÁÇÃï∂éöóÒÇ™é¿ç€Ç…ÇÕÅAä‘à·Ç¡Çƒê∂ê¨Ç≥ÇÍÇΩ C ï∂éöóÒÇ≈ǻǢǩǫǧǩÇämÇ©ÇflÇ‹Ç∑ÅBDZÇÍÇÁÇÃï∂éöóÒÇ™ä‘à·Ç¡Çƒê∂ê¨Ç≥ÇÍÇΩ C ï∂éöóÒÇÃèÍçáÇÕÅAc2pstr ÇåƒÇ—èoǵǃÅAǪÇÍÇÁÇǪÇÃèÍÇ≈ Pascal ï∂éöóÒÇ…ïœä∑ǵNjÇ∑ÅBǵǩǵÅAQTML ÇÕÅADZÇÍÇàÍìxǵǩçsÇÌǻǢÇÃÇ≈ÅAè„èqǵÇΩÇÊǧǻñ≥à”ñ°Ç»ÉfÅ[É^Çê∂ê¨ÇµénÇflÇÈDZÇΔÇÕdžÇËÇ‹ÇπÇÒ°

DZÇà QTML ã@î\ÇóòópÇ∑ÇÈäJî≠é“ÇÕÅADZÇÃÇÊǧǻ Pascal ï∂éöóÒÇèëÇ´çûÇ›â¬î\Ç»ÉÅÉÇÉäÇ…ì¸ÇÍÇÈÇÊǧDžíçà”ÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBé©ï™ÇÃäJî≠ÉVÉXÉeÉÄÇDZÇÍÇçsǧÇÊǧDžê›íËÇ∑ÇÈDZÇΔLJÇ≈Ç´Ç‹Ç∑ÅB

Ç‹ÇΩÇÕÅADZÇÃï∂éöóÒÇÅAîÒíËêîï∂éöóÒÉoÉbÉtÉ@ÇÃèâä˙ílDžLJÇ≈Ç´Ç‹Ç∑ÅB

static char helloStr[] = "\phello";

ǻǮÅAäJî≠é“Ç™ C ï∂éöóÒÇΔ Pascal ï∂éöóÒÇÃïœä∑Ç…óòópÇ≈Ç´ÇÈêÑèßÇÃä÷êîǙdžÇËÇ‹Ç∑ÅB

    CopyPascalStringToC
    CopyCStringToPascal
    c2pstrcpy
    p2cstrcpy


DZÇÍÇÁÇÃä÷êîÇÕÅAǪÇÃèÍÇ≈ÇÃïœä∑ÅiǬNjÇËÅAsrc ÇΔ dst ÇÃÉpÉâÉÅÅ[É^Ç™ìØÇ∂ÉÅÉÇÉäÉAÉhÉåÉXÇéwÇ≥ÇπÇÈÅjÇ™â¬î\Ç»ÇÊǧDžçÏÇÁÇÍǃǢNjÇ∑Ç™ÅAëOèqǵÇΩÇÊǧDžÅAì«Ç›éÊÇËêÍópÇÃÉoÉbÉtÉ@ÇÃì‡óeÇä‘à·Ç¡ÇƒïœçXǵÇÊǧÇΔǵÇΩÇËÅAíËêîÇïsópà”Ç…îjä¸ÇµÇΩÇËÇ∑ÇÈå¥àˆÇ…Ç»ÇËìæÇÈÅAǪÇÃèÍÇ≈ÇÃïœä∑ǵǩçsÇÌǻǢDZÇΔÇ…ÇÊÇÈêßñÒÇÕdžÇËÇ‹ÇπÇÒÅB


[2002 îN 1 åé 21 ì˙]